package kr.hkit.powerjava.chapter22.submit; //복습해라!!!!!!!!ㅠㅠ....
//새로 만들어서 다시 해보기

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;

public class TestMain {
	public static void main(String[] args) {
		
		ArrayList<Department> deptList = new ArrayList<>();
		DepartmentDAO deptDao = new DepartmentDAO(deptList);
		
		deptDao.addItem(new Department(1, "컴공", 4));
		
		deptDao.prnList();
		
		
		
		
	}
		/*ArrayList<Student> stdList = new ArrayList<>(); //배열생성 디폴트값으로
		initList(stdList); //ctrl클릭하면 그 메소드로 감
		//stdList는 위랑 다름. 
		
		StudentManager sm = new StudentManager(stdList); //arrList에 new생성자 추가된거임
		Student std = new Student(); //std 초기화 됨
		
		int res =0;
		
		do {
			System.out.println("메뉴를 선택하세요");
			//취소 누르면 null임. null은 숫자로 못바꿈. try 캐치문 써보기 
			try {
			res = Integer.parseInt(JOptionPane.showInputDialog("1.추가 2.검색 3.수정 4.삭제 5.리스트 6.종료"));
			//문자열을 숫자로 바꿔줌. parseInt 
			}catch(NumberFormatException e) {
				res = 6; //취소나 다른 문자 쓰면 6 되서 종료됨.
			}
			System.out.println("입력한 값은 " + res);
			switch(res) {
				case 1 :
					std=inputStdInfo(true);
					sm.addItem(std); //추가
					sm.prnList(); //확인
					break;
					
				case 2 : 
					std=sm.searchItem(inputStdInfo(false));
					if(std==null) {
						System.out.println("해당 학생 없음");
					}else {
						System.out.println(std); //그렇지 않으면 호출 
//						JOptionPane.showMessageDialog(null, std);
					}
					break;
					
				case 3 : //겟 셋 가능
					std=inputStdInfo(true); 
					sm.updateItem(std);
					break;
				case 4: 
					std=inputStdInfo(false);
					sm.delItem(std);
					break;
					
				case 5: //정렬!! 어떤 수로 정렬할 것인지 받아서 그거 대로 처리
					sm.prnList();
	
					System.out.println("[총점 순 정렬]");
					Collections.sort(stdList); 
					sm.prnList();
						
					System.out.println("[수학 점수 별 정렬]");
					Collections.sort(stdList,comp);
					sm.prnList();

					break;
				default:
					break;
			}
		}while(res<6);  
	} //end of main
*/		
	
	
	static Comparator<Student> comp = new Comparator<Student>() {
		@Override
		public int compare(Student o1, Student o2) {
			return o2.getMathScore() - o1.getMathScore();

		}
	};

	private static Student inputStdInfo(boolean gubun) {
		if (gubun) { //어차피 각 항목 똑같으니까 함수로 만들기 
			String std = JOptionPane.showInputDialog("학생번호 성명 국어 영어 수학");
			StringTokenizer st = new StringTokenizer(std); //공백을 기준으로 잘라냄 
			int stdNum = Integer.parseInt(st.nextToken());
			String stdName = st.nextToken();
			int kor = Integer.parseInt(st.nextToken());
			int eng = Integer.parseInt(st.nextToken());
			int math = Integer.parseInt(st.nextToken());
			return new Student (stdNum, stdName, kor, eng, math);
			//뉴로 객체 생성하고 주소 넘겨줌!!
		} else {
			String std = JOptionPane.showInputDialog("학생번호 성명");
			StringTokenizer st = new StringTokenizer(std);
			int stdNum = Integer.parseInt(st.nextToken());
			String stdName = st.nextToken();
			return new Student (stdNum, stdName);
		}	
	}
	

	private static void initList(ArrayList<Student> stdList) {//정보입력. 
		stdList.add(new Student(1, "김태희", 87,87,87));
		stdList.add(new Student(2, "이민정", 90,87,80));
		stdList.add(new Student(3, "장주연", 70,75,70));
		stdList.add(new Student(4, "김보경", 60,65,65));
		stdList.add(new Student(5, "추지영", 50,55,95));
		stdList.add(new Student(6, "이민정", 90,87,100));
	}
}



//함수 만들어서 리턴타입을 스튜던트로 

		/*ArrayList<Student> stdList = new ArrayList<>();
		initList(stdList);
		
		StudentManager sm = new StudentManager(stdList);
		sm.prnList(); //초기 데이터
		
		Student std = new Student(stdList.size()+1, "제시카", 90, 45, 55);
		sm.addStudent(std);
		sm.prnList(); //제시카 추가
		
		sm.delStudent(std);
		sm.prnList(); //제시카 삭제 
		*/
	
		/*Student std = new Student (2, "이민정"); //이 사람을 찾아달라
		System.out.println(stdList.lastIndexOf(std) + "의 위치에 존재" + stdList.contains(std));
		// indexOf는 앞에서 부터 순차적으로 검색함. lastindexOf는 뒤에서 부터 검색함
		
		System.out.println("[총점 순 정렬]");
		Collections.sort(stdList); // Campareble 구현해야함
		prnHeader();
		prnList(stdList);
		

		System.out.println("[수학 점수 별 정렬]");
		Comparator<Student> comp = new Comparator<Student>() {
			@Override
			public int compare(Student o1, Student o2) {
				return o1.getMathScore() - o2.getMathScore();
			}
		};
		
		Collections.sort(stdList,comp);
		prnHeader();
		prnList(stdList);
	} 
	*/


	/*private static void prnList(ArrayList<Student> stdList) { //출력
		
		for(Student std : stdList) {
			System.out.println(std);
		}
	}*/
